package cn.gson.boot.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;

import javax.annotation.PostConstruct;

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
	@Configuration//跨域访问
	public class MyConfiguration {
	    @Bean
	    public WebMvcConfigurer corsConfigurer() {
	        return new WebMvcConfigurerAdapter() {
	            @Override
	            public void addCorsMappings(CorsRegistry registry) {
	                registry.addMapping("/**").allowedOrigins("*")
							.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
							.allowCredentials(true).maxAge(3600);
	            }
	        };
	    }
	}

	@Configuration//注册转换器
	public class WebDateConfig{
		@Autowired
		private RequestMappingHandlerAdapter handlerAdapter;
		@PostConstruct
		public void initEditableAvlidation() {
			ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer();
			if(initializer.getConversionService()!=null) {
				GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService();
				genericConversionService.addConverter(new DateConvertor());//添加自定义的类型转换器
			}
		}
	}

   /* //配置登录拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 多个拦截器组成一个拦截器链
        // addPathPatterns 用于添加拦截规则
        // excludePathPatterns 用户排除拦截
        registry.addInterceptor(new LoginInterceptor())                   //添加拦截器
                .addPathPatterns("/**")                    //拦截所有请求
                .excludePathPatterns("/log/api/login");    //对应的不拦截的请求

        super.addInterceptors(registry);
    }*/
}
